home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Library / +ORC / Orc pac 5 / HOWTO51.TXT < prev    next >
Encoding:
Text File  |  2000-05-25  |  23.9 KB  |  493 lines

  1.                      HOW TO CRACK, by +ORC, A TUTORIAL
  2.  
  3. ---------------------------------------------------------------------------
  4.  
  5.                  Lesson 5.1: Disk & CD-Rom access (basics)
  6.  
  7. ---------------------------------------------------------------------------
  8.  
  9.               [MARIO ANDRETTI] [REACH FOR THE SKY] [FS v.2.12]
  10.  
  11.                    --------------------------------------
  12.  
  13. LESSON 5 (1) - HOW TO CRACK, HANDS ON - Disk/CDROM access (plus
  14. bypasses "on the fly")
  15.  
  16. Somewhere I have to put the bypasses (loader programs) in this
  17. tutorial, allow me to put them here:
  18.  
  19. Preparing a loader to bypass a protection [MARIO ANDRETTI]
  20.      At time the protectionists hook vectors in order to impose
  21. a particular protection. In this (and similar) cases a good
  22. crack-way is to prepare a "loader" program, that "de-hooks" the
  23. vector used for the protection. This kind of crack can be used
  24. also for internet cracking (on some firewall configurations, see
  25. lesson A.2).
  26.      As example let's take "Mario andretti racing challenge", a
  27. stupid game that uses the SAME (!) protection scheme you'll still
  28. find to day on some access routines of military servers around
  29. the witlessly called "free" world.
  30.  
  31. In order to crack this cram you would prepare a loader on the
  32. following lines:
  33.  
  34. loc   code           instruction        what's going on
  35. -------------------------------------------------------
  36. :0100 EB44           JMP 0146
  37. ...
  38. :0142 0000           <- storing for offset of INT_21
  39. :0144 5887           <- storing for segment of INT_21
  40. :0146 FA             CLI
  41. :0147 0E             PUSH CS
  42. :0148 1F             POP DS
  43. :0149 BCB403         MOV SP,03B4
  44. :014C FB             STI
  45. :014D 8C1EA901       MOV [01A9],DS      <- save DS
  46. :0151 8C1EAD01       MOV [01AD],DS         three
  47. :0155 8C1EB101       MOV [01B1],DS         times
  48. :0159 B82135         MOV AX,3521        <- get INT_21
  49. :015C CD21           INT 21                in ES:BX
  50. :015E 891E4201       MOV [0142],BX      <- store offset
  51. :0162 8C064401       MOV [0144],ES      <- store segment
  52. :0166 BA0201         MOV DX,0102
  53. :0169 B82125         MOV AX,2521        <- set INT_21 to
  54. :016C CD21           INT 21                DS:0102
  55. :016E 0E             PUSH CS
  56. :016F 07             POP ES             <- ES= current CS
  57. :0170 BBB403         MOV BX,03B4
  58. :0173 83C30F         ADD BX,+0F
  59. :0176 B104           MOV CL,04
  60. :0178 D3EB           SHR BX,CL          <- BX= 3C
  61. :017A B8004A         MOV AX,4A00        <- Modify memory block
  62. :017D CD21           INT 21                to 3C paragraphs
  63. :017F BA9E01         MOV DX,019E        <- ds:dx=program name
  64. :0182 BBA501         MOV BX,01A5        <- es:bx = param. block
  65. :0185 B8004B         MOV AX,4B00        <- load ma.com
  66. :0188 CD21           INT 21
  67. :018A 2E8B164201     MOV DX,CS:[0142]   <- reset old int_21
  68. :018F 2E8E1E4401     MOV DS,CS:[0144]
  69. :0194 B82125         MOV AX,2521
  70. :0197 CD21           INT 21
  71. :0199 B8004C         MOV AX,4C00        <- terminate with return
  72. :019C CD21           INT 21                code
  73. :019E 6D612E636F6D00 "ma.com"
  74.       0000           fence
  75. :01A7 B2015887
  76. :01AB B2015887
  77. :O1AF B2015887
  78.       0000           fence
  79.  
  80. let's now prepare a routine that hooks INT_21:
  81.  
  82. push all
  83. CMP AX,2500    <- go on if INT_21 service 25
  84. JNZ ret
  85. CMP Word Ptr [0065], C00B <- go on if location 65 = C00B
  86. JNZ ret
  87. MOV  Byte Ptr [0060], EB  <- crack instructions
  88. MOV  Byte Ptr [0061], 3C
  89. MOV  Byte Ptr [0062], 40  <- INC AX
  90. MOV  Byte Ptr [0063], 90  <- NOP
  91. MOV  Byte Ptr [0064], 48  <- DEC AX
  92. pop all
  93. JMP  FAR CS:[0142]  <- JMP previous INT_21
  94.  
  95.      From now on this loader will work every time that a program
  96. with location [0065] containing an 0R AX,AX instruction (0BC0:
  97. it's the case of ma.com) calls INT_21 service 25 (hook a vector),
  98. the target program will be modified on the fly and will get, at
  99. location [0060], the instruction JMP 3C locations ahead, despite
  100. the fact that it has routines capable of self checking in order
  101. to make sure it has not been modified.
  102.      The most important thing is the routine that YOU write that
  103. will precede the call to INT_21 (or any other INT) service 25 (or
  104. any other service) in order to crack on the fly the offending
  105. program. I'll show you another one, this one for [Reach for the
  106. skies] (reach.com):
  107.  
  108. push all
  109. CMP  AH,3D      <- is it service 3D? (open file)
  110. JNZ  ret        <- no, so ret
  111. CMP  DX,13CE    <- you wanna open file at 13CE?
  112. JNZ  ret        <- no, so ret
  113. MOV  AX,[BP+04] <- in this case
  114. MOV  DS,AX
  115. CMP  Byte Ptr [B6DA],74 <- old instructions
  116. JNZ  015B
  117. CMP  Byte Ptr [B6DB],0F <- ditto
  118. JNZ  015B
  119. CMP  Byte Ptr [B6DC],80 <- ditto, now we now where we are
  120. JNZ  015B
  121. MOV  Byte Ptr [B6DA],EB <- crack
  122. MOV  Byte Ptr [B697],40 <- camouflaged  no-opping
  123. MOV  Byte Ptr [B698],48 <- cam          nop
  124. MOV  Byte Ptr [B699],90 <- cam          nop
  125. MOV  Byte Ptr [B69A],40 <- cam          nop
  126. MOV  Byte Ptr [B69B],48 <- cam          nop
  127. MOV  DX,CS:[0165]
  128. MOV  DS,CS:[0167]
  129. MOV  AX,2521  <- set hook
  130. INT  21
  131. POP  all
  132. JMP  FAR CS:[0165]
  133. Here you did change the instruction 740F in the instruction EB0F,
  134. and you did "noop" the instructions at B697-B69B. (Well, more
  135. elegantly than "noop" them with "90" bytes, you choose a INC AX,
  136. DEC AX, NOP, INC AX, DEC AX sequence instead! There are sound
  137. reasons to use a sequence of "working" instructions instead of
  138. NOPs: recent protection schemes "smell" patched nops inside the
  139. program and trash everything if they find more than -say- three
  140. consecutive NOPs! You should always try to choose THE LESS
  141. INTRUSIVE and MORE "CAMOUFLAGED" solution when you crack!)
  142.      You can apply this kind of crack, on the same lines, to many
  143. programs that perform self checking of the code and hook the
  144. vectors.
  145.  
  146. REAL DISK ACCESS STUFF
  147.      Now we may come to the subject of this lesson:
  148.      As usual, let's begin from the beginning: history is always
  149. the key that allows an understanding of present and future, in
  150. cracking matters too. As the older 5 1/4 inch big black floppy
  151. disks were still used (the 320K/8 tracks or 360K/9 tracks ones,
  152. that were really "floppy" and have nowadays almost disappeared)
  153. one of the more common methods to protect a program, was to
  154. format the "master" (key) disk in a weird way. Old floppy disk
  155. for the PC did usually store 360K at 9 sectors per track.
  156.      Some basics for those of you that do not know anything: in
  157. order to defeat this kind of cracks you need to know two things:
  158. the floppy disk parameter block (FDPB) and the interrupt routines
  159. dealing with format/read disk (basically INT_13).
  160.      Most often, the protection scheme is to either format one
  161. or more sectors or tracks with sector sizes other than the
  162. standard 512 bytes, or to either give one of the sectors a wild
  163. sector number like 211 or just not format a whole track of
  164. eight/nine/15 sectors. If you, for instance, have got the same
  165. (very old) copy of VisiCalc master I do, you'll find that sector
  166. 8 on track 39 is missing entirely. The interrogation with
  167. assembly or with an "ad hoc" utility (I use the tools I wrote
  168. myself, but you 'll be able to find many such utilities in public
  169. domain, the oldest one, from 1984 (!) being the seasoned [U-ZAP]
  170. an "Ultra utility" from the "Freesoft company") will tell you
  171. which sector numbers were altered, their size in bytes, and if
  172. they were formatted with a CRC error (another not so fancy
  173. trick).
  174.      The floppy disk parameters are stored in the BIOS: interrupt
  175. vector 1E contains the address of the floppy disk parameter
  176. block. The FDPB's contents are the following:
  177. Offset    Function                 crackworthy?        Example
  178. 0    Step rate & head unload            no                  DF
  179. 1    head load time                     no                  02
  180. 2    Motor on delay                     no                  25
  181. 3    Number of bytes per sector         yes                 02
  182. 4    Last sector number                 yes                 12
  183. 5    Gap length                         yes                 1B
  184. 6    Data track length                  yes                 FF
  185. 7    Format gap length                  yes                 54
  186. 8    Format byte                        no                  F6
  187. 9    Head settle time                   no                  0F
  188. A    Motor start time                   no                  02
  189.  
  190. 0)   Offset #0: the left "nybble" (single digit) of this value
  191.      is the step rate time for the disk drive head. The right
  192.      nybble is the disk head unload time. These values are best
  193.      left alone.
  194. 1)   Offset #1: again, don't fool around with these values. The
  195.      left nybble is the disk head load time, and the right
  196.      nybble is the direct memory access mode select.
  197. 2)   Wait time until motor is turned off. Not normally of use.
  198. 3)   Bytes-per-sector value: AH-HAH! If you place a "0" in this
  199.      value, the PC expects all sectors to be 128 bytes long. A
  200.      "1" means a  sector size of 256 bytes, a "2" means 512
  201.      bytes (this is the standard DOS value), and a "3" means
  202.      1024 bytes per sector.
  203. 4)   Highest sector number on a track: this is used for
  204.      formatting and tells DOS how many sectors there are on each
  205.      track.
  206. 5)   Gap length for diskette reads: this is what you fool around
  207.      with if you keep getting CRC errors when you try to read a
  208.      non-standard size sector. Normally, you can just leave this
  209.      alone except when formatting with a U-Format tool.
  210. 6)   Data length: This contains the number of bytes in a sector
  211.      when the value in table byte #4 doesn't contain a 0, 1, 2,
  212.      or 3.
  213. 7)   Number of bytes in the gap between sectors: this is also
  214.      only used when formatting special tracks.
  215. 8)   Format fill byte: When formatting, this is the
  216.      initialization byte that will be placed in all new sectors.
  217. 9)   Head settle time: leave this alone.
  218. A)   Motor start time: don't fool with this either.
  219. In order to modify globally the number of tracks on a given disk
  220. and the number of sectors per track you can always format with
  221. the DOS command switches "/t:" and "/n:"
  222.                   FORMAT /t:tracks /n:sectors
  223.  
  224.      If you want to find out what the existing parameters are,
  225. run [Debug.exe] or [Symdeb.exe] and enter the following commands:
  226. -    d 0:78    l 4                 <- get FDPB address
  227.  0000:0070     22 05 00       <- debugger's likely response
  228. -    d 0:522   l a                 <- get 10 FDPB values
  229.  0000:520 DF 02 25 02 12 1B FF...  <- see preceding table
  230.  
  231.      Remember that all standard disk formats under DOS support
  232. a sector size of 512 bytes, therefore, for one-sided 5.25 inch
  233. floppies:
  234.                40t*8s*512b=163.840 bytes (160Kb)
  235.                40t*9s*512b=184.320 bytes (180Kb)
  236. and for two-sided 5.25 inch floppies:
  237.            40t*8s*512b*2sides=327.680 bytes (320Kb)
  238.            40t*9s*512b*2sides=368.640 bytes (360Kb)
  239.      Beginning with DOS version 3.0 (Yeah, more and more
  240. history!) a new floppy disk format has been supported: The IBM
  241. AT (80286 CPU) introduced the so called "high capacity" 5.25 u-
  242. inch floppy, capable of storing 1.2M at 15 sectors per track:
  243.           80t*15s*512b*2sides=1.228.800 bytes (1.2Mb)
  244.      Later on were introduced the to-day universally used 3.5
  245. inch floppies, the ones inside a rigid small plastic cartridge,
  246. and we have, similarly:
  247.              3.5-inch double sided/double density      720K
  248.             3.5-inch double sided/quad density (HD)    1440K
  249.               3.5-inch double sided/high density       2880K
  250.  
  251. [INT_13, AH=18, Set media type for format]
  252.      In order to create weird layouts, the protectionists use
  253. interrupt 13h, service 18h, that specifies to the formatting
  254. routines the number of tracks and sectors per track to be placed
  255. on the media:
  256. *    Registers on entry: AH=18h; CH=N° of tracks; CL= Sectors
  257.      per track; DL= Drive number (A=0; B=1;C=2... bit 7 is set
  258.      if the drive is an hard disk)
  259. *    Registers on Return: DI: Offset address of 11-byte
  260.      parameter table; ES: Segment address of 11-byte parameter
  261.      table.
  262.  
  263. [INT_13, AH=2, Read disk sectors]
  264. In order to read them, they have to use INT_13, service 2, read
  265. disk sectors, with following layout:
  266. *    Registers on entry: AH=2h; AL= N° of sectors; BX= Offset
  267.      address of data buffer; CH=track; CL= Sector; DH= Head
  268.      (side) number; DL= Drive number; ES: Segment address of
  269.      data buffer.
  270. *    Registers on Return: AH= return code. If the carry flag is
  271.      not set, AH=0, therefore the weird sector has been read, if
  272.      on the contrary the carry flag is set, AH reports the
  273.      status byte as follows:
  274. 76543210  HEX  DEC       Meaning
  275. 1         80h  128       Time out - drive crazy
  276.  1        40h  064       Seek failure, could not move to track
  277.   1       20h  032       Controller kaputt
  278.    1      10h  016       Bad CRC on disk read
  279.     1     09h  009       DMA error - 64K boundary crossed
  280.     1     08h  008       DMA overrun
  281.      1    04h  004       Bad sector - sector not found
  282.       11  03h  003       Write protect!
  283.       1   02h  002       Bad sector ID (address mark
  284.        1  01h  001       Bad command
  285.  
  286. [Return code AH=9: DMA boundary error]
  287.      One of the possible errors should be explained, coz it is
  288. used in some protection schemes: AH=9 DMA boundary error, means
  289. that an illegal boundary was crossed when the in formation was
  290. placed into RAM. DMA (Direct memory access) is used by the disk
  291. service routines to place information into RAM. If a memory
  292. offset address ending in three zeros (ES:1000, ES: 2000...) falls
  293. in the middle of the area being overlaid by a sector, this error
  294. will occur.
  295.  
  296. [INT_13, AH=4 Verify disk sectors]
  297.      Another possible protection interrupt is interrupt 13H,
  298. service 4, Verify disk sectors. Disk verification takes place on
  299. the disk and DOES NOT involve verification of the data on the
  300. disk against data in memory! This function has no buffer
  301. specification, does not read or write a disk: it causes the
  302. system to read the data in the designated sector or sectors and
  303. to check its computed cyclic redundancy check (CRC) against data
  304. stored on the disk. See INT_13, AH=2 registers and error report.
  305.  
  306. [CRC]
  307.      The CRC is a checksum, that detects general errors. When a
  308. sector is written to disk, an original CRC is calculated AND
  309. WRITTEN ALONG with the sector data. The verification service
  310. reads the sector, recalculates the CRC, and compares the
  311. recalculated CRC with the original CRC.
  312.  
  313.      We saw that some protection schemes attempt to disguise
  314. interrupt calls. This is particularly frequent in the disk access
  315. protection schemes that utilize INT_13 (the "disk" interrupt).
  316.      If you are attempting to crack such programs, the usual
  317. course of action is to search for occurrences of "CD13", which
  318. is machine language for interrupt 13. One way or another, the
  319. protection scheme has to use this interrupt to check for the
  320. special sectors of the disk. If you examine a cross section of
  321. the program, however, you'll find programs which do not have
  322. "CD13" in their machine code, but which clearly are checking the
  323. key disk for weird sectors. How comez?
  324.      There are several techniques which can be used to camouflage
  325. the protection scheme from our nice prying eyes. I'll describe
  326. here the three such techniques that are more frequent:
  327. 1)   The following section of code is equivalent to issuing an
  328. INT 13 command to read one sector from drive A, side 0, track
  329. 29h, sector ffh, and then checking for a status code of 10h:
  330.      cs:1000   MOV  AH,02     ;read operation
  331.      cs:1002   MOV  AL,01     ;1 sector to read
  332.      cs:1004   MOV  CH,29     ;track 29h
  333.      cs:1006   MOV  CL,FF     ;sector ffh
  334.      cs:1008   MOV  DX,0000   ;side 0, drive A
  335.      cs:100B   XOR  BX,BX     ;move 0...
  336.      cs:100D   MOV  DS,BX     ;...to DS register
  337.      cs:100F   PUSHF          ;pusha flags
  338.      cs:1010   PUSH CS        ;pusha CX
  339.      cs:1011   CALL 1100      ;push address for next
  340.                               instruction onto stack and branch
  341.      cs:1014   COMP AH,10     ;check CRC error
  342.      cs:1017   ... rest of verification code
  343.      ...
  344.      ...
  345.      cs:1100   PUSHF          ;pusha flags
  346.      cs:1101   MOV  BX,004C   ;address of INT_13 vector
  347.      cs:1104   PUSH [BX+02]   ;push CS of INT_13 routine
  348.      cs:1107   PUSH [BX]      ;push IP of INT_13 routine
  349.      cs:1109   IRET           ;pop IP,CS and flags
  350. Notice that there is no INT 13 command in the source code, so if
  351. you had simply used a debugger to search for "CD13" in the
  352. machine code, you would never have found the protection routine.
  353.  
  354. 2)   Another technique is to put in a substitute interrupt
  355. instruction, such as INT 10, which looks harmless enough, and
  356. have the program change the "10" to "13 (and then back to "10")
  357. on the fly. A search for "CD13" would turn up nothing.
  358.  
  359. 3)   The best camouflage method for interrupts I have ever
  360. cracked (albeit not on a INT 13) was a jump to a section of the
  361. PROGRAM code that reproduces in extenso the interrupt code. This
  362. elegant (if a little overbloated) disguise mocks every call to
  363. the replicated interrupt.
  364.  
  365. LOADING ABSOLUTE DISK SECTORS
  366. Old good [debug.com] has been called the "swiss army knife" of
  367. the cracker. It allows a lot of nice things, inter alia the
  368. loading, reading, modifying and writing of absolute sectors of
  369. the disks. The sector count starts with the first sector of track
  370. 0, next sector is track 0, second side (if double sided), then,
  371. back to the first side, track 1, and so on, until the end of the
  372. disk. Up to 80h (128) sectors can be loaded at one time. To use
  373. you must specify starting address, drive (0=A, 1=B, etc...),
  374. starting sector and number of sectors to load.
  375.                                -   l 100 0 10 20
  376. This instruction tells DEBUG to load, starting at DS:0100, from
  377. drive A, sector 10h for 20h sectors. This allows at times the
  378. retrieval of hidden and/or weird formatted data. If you get an
  379. error, check the memory location for that data. Often times, part
  380. of the data has been transferred before the error occurs, and the
  381. remainder can be manually entered or gathered through repetitive
  382. retries.
  383.  
  384. Bear all this in mind learning the following cracks.
  385. Let's now crack an "oldie" primitive:
  386. MS Flight simulator (old version 2.12, from 1985!)
  387. This old program used -in 1985!- following beautiful protection
  388. scheme: on the disk you had only a "stub", called FS.COM with few
  389. bytes, which had following instructions:
  390.  
  391. loc   code           instruction        what's going on
  392. -------------------------------------------------------
  393. :0100 FA             CLI                ;why not?
  394. :0101 33C0           XOR AX,AX          ;ax=0
  395. :0103 8ED0           MOV SS,AX          ;ss=0
  396. :0105 BCB0C0         MOV SP,C0B0        ;SP=C0B0
  397. :0108 8EC0           MOV ES,AX          ;ES=0
  398. :010A 26C70678003001 MOV Wptr ES:[0078],0130 ;Wp 0:78=130
  399. :0111 268C0E7A00     MOV ES:[007A],CS   ;0:7A=Segment
  400. :0116 BB0010         MOV BX,1000        ;BX=1000
  401. :0119 8EC3           MOV ES,BX          ;ES=1000
  402. :011B 33DB           XOR BX,BX          ;BX=0
  403. :011D B80102         MOV AX,0201        ;AH=2 AL=1 sector
  404. :0120 BA0000         MOV DX,0000        ;head=0 drive=0
  405. :0123 B96501         MOV CX,0165        ;track=1 sector=65 (!)
  406. :0126 CD13           INT 13             ;INT 13/AH=2
  407. :0128 B83412         MOV AX,1234        ;AX=1234
  408. :012B EA00000010     JMP 1000:0000      ;JMP to data we just read
  409. :0130 CF             IRET               ;Pavlovian, useless ret
  410.  
  411.      You see what's happening in this old protection scheme,
  412. don't you? Herein you can watch the same snap that happens in
  413. more recent (much more recent) protection schemes (as you'll see
  414. in the next lesson): the protection searches for a weird
  415. formatted sector and/or for particular data.
  416.      That should be no problem for you any more: you should just
  417. reverse engineer everything (and that goes on pretty quickly:
  418. just watch and break on the INT_13 calls), fetch the "weird"
  419. data, tamper the whole crap and have your soup as you like it.
  420.      One more word about "old" protection schemes. Be careful not
  421. to spurn them! Some of them are
  422.      -- CLEVER
  423.      -- STILL USED
  424.      -- DIFFICULT TO CRACK... I mean, this older DOS programs had
  425. nice protections... it's pretty annoying to crack windows
  426. programs that require a registration number: as you saw in Lesson
  427. 3, you just type your name and a serial number of your choice in,
  428. say "666666666", break into the program with WINICE, search the
  429. "666666666" and search too, for good measure, your own name, set
  430. a memory read breakpoint where the number dwells and look at the
  431. code that manipulates your input. As [Chris] rightly pointed out,
  432. you can even rip the code straight out of the program and create
  433. a key generator which will produce a valid code. This code will
  434. work for any name you typed in only in the "pure maths
  435. manipulation" protection schemes, and will on the contrary be
  436. specific, following the name you typed in, the "alpha-maths
  437. manipulation" protection schemes (like MOD4WIN, see the Windows
  438. lessons), watch in this case the "pseudo-random xoring" of the
  439. letters that compose your name.
  440.      -- STUNNING, coz new ideas have always been infrequent, and
  441. they are getting more and more rare in this objectionable world
  442. of lazy, incapable programmers patronizing us with ill-cooked
  443. outrages like Windows'95... yeah, as usual there is no
  444. "development" at all, quite the contrary, I would say. Take a
  445. step backward, sip a good Martini-Wodka (please remember that
  446. only Ice cubes, Dry Martini, Wodka Moskovskaja, Schweppes'
  447. "Indian tonic" a green olive from Tuskany and a maltese lemon
  448. zest will really be perfect) and watch from your balcony, with
  449. unsullied eyes, your town and the people around you: slaves
  450. everywhere, leaving home at 7.30 in the morning, stinking in a
  451. progression of identical cars, forced to interminably watch
  452. advertisement panels and endlessly listen to boorish publicity,
  453. happy to go to work (if they happen to have the "luck" to work,
  454. in this inequitable society) the whole day long in order to
  455. produce other cars in order to buy, one day, a new car with a
  456. different colour...
  457.      Why people don't look at the stars, love each other, feel
  458. the winds, ban the stinking cars from the places where they live
  459. and eat, study colours... name yourself a not-consumistic
  460. activity? Why don't they read any poems any more? No poetry any
  461. more, in the grey society of the publicity-spots slaves...poetry
  462. will soon be forbidden, coz you cannot CONSUME as you read poems,
  463. and in this farce of a society you are BOUND to consume, that's
  464. the only thing they want you to do... you are CULTIVATED to
  465. consume... no books worth to read any more... stupid american
  466. conventional cram everywhere... boy, at times I'm missing some
  467. well placed neutron bombs, the ones that would kill all these
  468. useless zombies and leave noble books and good Wodka untouched.
  469. It's difficult to believe in democracy any more... if I ever
  470. did... all the useless zombie do -unfortunately- vote, and they
  471. do vote for "smiling semblances", for "conventionally minded
  472. idiots" that so act as if they would "really" be like what they
  473. "look" like and could not care less about anything else than
  474. making bucks and defend intolerant and petty patterns. The slaves
  475. choose the people they have "seen" on TV... as if the egyptians
  476. would VOTE for their pharaohs, exhilarated under the whips of
  477. publicity... sorry, at times I forget that you are here for the
  478. cracks, and could not care less about what I think...
  479.  
  480.      You 'll obtain the OTHER missing lessons IF AND ONLY IF you
  481. mail me back (via anon.penet.fi) with some tricks of the trade
  482. I may not know that YOU discovered. Mostly I'll actually know
  483. them already, but if they are really new you'll be given full
  484. credit, and even if they are not, should I judge that you
  485. "rediscovered" them with your work, or that you actually did good
  486. work on them, I'll send you the remaining lessons nevertheless.
  487. Your suggestions and critics on the whole crap I wrote are also
  488. welcomed.
  489.  
  490.                                 E-mail +ORC
  491.  
  492.                         +ORC an526164@anon.penet.fi
  493.